//需要安装的loader 
    //babel-loader -> npm i babel-loader babel-core babel-preset-env -save -dev

//需要安装的插件
    //webpack -> npm i webpack --save

const webpack = require('webpack');
const path = require('path');

module.exports = {
    //定义入口
    entry:{
        pageA:'./pageA',    //pageA入口,只有多个打包页面才支持打包公共组件
        pageB:'./pageB',   //pageB入口
        vendor:['jquery','vue','axios'],   //第三方组件的入口
    },

    //定义出口
    output:{
        path:path.resolve(__dirname,'./dist'),   //配置打包路径在dist文件夹下
        publicPath:'./dist/',         // 动态资源加载路径  打包后的懒加载代码路径，可以是绝对地址
        filename:'[name].bundle.js',   //配置打包文件的名字
        chunkFilename:'[name].bundle.js',   //配置打包chunk的名字
    },
    
    // 定义loader
    module:{
        rules:[
            {
                test:/\.js$/,  // 规则，如果遇到.js的文件
                use:{
                    loader:'babel-loader',   // 使用babel-loader 编译
                    // babel-loader 使用时的配置
                    options:{
                        /* 
                            在不需要presets的配置的时候使用  ['env]   否则使用  [[env,{}]] 格式
                        */
                        presets:[
                            /* 
                                env :使用全部的babel  
                                {} : presets的配置
                            */ 
                            ['env',{
                                /* 
                                    targets  配置使用babel的目标
                                        browsers:  浏览器
                                            '> 1%': 使用率大于1%的浏览器
                                            'last 2 versions': 浏览器后两个版本
                                */
                                targets:{
                                    browsers:['> 1%','last 2 versions'],
                                }
                            }]
                        ],
                        "plugins":["transform-runtime"]   //babel用到的runtime插件
                    }
                },  
                exclude:/node_modules/ // 排除node_modules文件夹中的
            }
        ]
    },

    plugins:[
        new webpack.optimize.UglifyJsPlugin(),  //混淆压缩代码
        new webpack.optimize.CommonsChunkPlugin({
            name:'common',   //打包名字为common
            minChunks:2,   //出现过2次以上引用的打包起来
            chunks:['pageA','pageB'],    //打包pageA，PageB中的公共业务组件
        }),

        new webpack.optimize.CommonsChunkPlugin({
            name:['vendor'],   //打包第三方插件库和webpack自己的方法
            minChunks:Infinity
        })
    ]
}